#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>
//
//int compare(const void* a, const void* b)
//{
//    return (*(int*)a - *(int*)b);
//}
//
//int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {
//    qsort(nums, numsSize, sizeof(int), compare);
//    int* arr = (int*)malloc(sizeof(int) * numsSize);
//    if (arr == NULL)
//    {
//        perror("malloc");
//        exit(-1);
//    }
//    int i = 1;
//    *returnSize = 0;
//    for (i = 1; i <= numsSize; i++)
//    {
//        if (nums[i - 1] != i)
//        {
//            arr[(*returnSize)++] = i;
//        }
//    }
//    return arr;
//}
//
//int main()
//{
//    int arr[5] = { 1,2,4,6,5 };
//    int x = 0;
//    int* p=findDisappearedNumbers(arr, 5, &x);
//    for (int i = 0; i < x; i++)
//    {
//        printf("%d", p[i]);
//    }
//    free(p);
//	return 0;
//}
//
//
//#include <stdio.h>
//
//int P_number_jugde(int n)
//{
//    int com = 0;
//    int i = 1;
//    for (i = 1; i < n; i++)
//    {
//        if (n % i == 0)
//        {
//            com += i;
//        }
//        if (com > n)
//        {
//            continue;
//        }
//    }
//    return com;
//}
//
//int main() {
//    int n;
//    scanf("%d", &n);
//    int count = 0;
//    int i = 0;
//    for (i = 1; i <= n; i++)
//    {
//        if (i == P_number_jugde(i))
//        {
//            count++;
//        }
//    }
//    printf("%d", count);
//    return 0;
//}

//#include <stdio.h>
//
//int main() {
//    char str[10001] = { 0 };
//    int str_s = 0;
//    char ch = 0;
//    int count = 0;
//    while ((ch = getchar()) != '\n')
//    {
//        str[str_s++] = ch;
//    }
//    int i = 0;
//    for (i = str_s - 1; i >= 0; i--)
//    {
//        if (str[i] <= 'a' && str[i] >= 'z'
//            || str[i] <= 'A' && str[i] >= 'Z')
//        {
//            for (int j = i + 1; count > 0; j++)
//            {
//                printf("%c", str[j]);
//                count--;
//            }
//            printf(" ");
//        }
//        else
//        {
//            count++;
//        }
//    }
//    return 0;
//}


//int main()
//{
//	int* a, * b;
//	int x = 10, y = 20;
//	a = &x;
//	b = &y;
//	printf("%p\n", a);
//	printf("%p\n", b);
//	a = a - b;
//	printf("%p\n", a);
//	return 0;
//}


//int main()
//{
//	int x = 1;
//	int y = 2;
//	int* a = (int*)malloc(sizeof(int) * 2);
//	a[0] = x;
//	a[0]++;
//	a[1] = y;
//	printf("%p\n", a);
//	printf("%d\n", *a);
//	printf("%p\n", a+1);
//	printf("%d\n", *(a+1));
//	free(a);
//	return 0;
//}

//int* masterMind(char* solution, char* guess, int* returnSize) {
//    static int answer[2] = { 0 };
//    answer[0] = 0; answer[1] = 0;
//    char* s_str = solution;
//    char* g_str = guess;
//    int s_arr[4] = { 0 };
//    int g_arr[4] = { 0 };
//    while (*s_str)
//    {
//        switch (*s_str)
//        {
//        case 'R':
//            s_arr[0]++;
//            break;
//        case 'Y':
//            s_arr[1]++;
//            break;
//        case 'G':
//            s_arr[2]++;
//            break;
//        case 'B':
//            s_arr[3]++;
//            break;
//        }
//        switch (*g_str)
//        {
//        case 'R':
//            g_arr[0]++;
//            break;
//        case 'Y':
//            g_arr[1]++;
//            break;
//        case 'G':
//            g_arr[2]++;
//            break;
//        case 'B':
//            g_arr[3]++;
//            break;
//        }
//        if (*s_str == *g_str)
//        {
//            answer[0]++;
//            s_str++;
//            g_str++;
//        }
//        else
//        {
//            s_str++;
//            g_str++;
//        }
//    }
//    for (int i = 0; i < 4; i++)
//    {
//        if (s_arr[i] < g_arr[i])
//        {
//            answer[1] += s_arr[i];
//        }
//        else
//        {
//            answer[1] += g_arr[i];
//        }
//    }
//    *returnSize = 2;
//    return answer;
//}
//
//int main()
//{
//    int x = 0;
//    int* arr = masterMind("RGRB", "BBBY", &x);
//    for (int i = 0; i < x; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}

//typedef union
//{
//	int a;
//	struct
//	{
//		short b;
//		short c;
//	};
//}X;
//int main()
//{
//	X x;
//	x.a = 0x20150810;
//	printf("%x,%x\n", x.b, x.c);
//	return 0;
//}


int main() {
    int n, k;
    int count = 0;
    scanf("%d %d", &n, &k);
    for (int y = 1; y <= n; y++)
    {
        for (int x = 1; x <= n; x++)
        {
            if (x % y >= k)
            {
                count++;
            }
        }
    }
    printf("%d", count);
    return 0;
}


//int main()
//{
//	int i = 3 % 4;
//	printf("%d", i);
//	return 0;
//}